Composing a Message in an Online Textbox Using a Non-Latin Script

ABSTRACT

A method and an apparatus are provided for composing a message in an online textbox using a non-Latin script. In one example, the method includes receiving a selection of a target language for composing the message in the online textbox, loading a hash table and an integer n that are associated with the target language, adding to a queue a character inputted from a QWERTY keyboard, and applying appropriate parsing and mapping techniques to the queue using the hash table and the integer n to display an appropriate script of the target language.

FIELD OF THE INVENTION

The present invention relates to composing a message online. Moreparticularly, the present invention relates to composing a message in anonline textbox using a non-Latin script.

BACKGROUND OF THE INVENTION

Companies like Yahoo!® typically allow users to set their preferredcontent in the company's portal application for the Internet. If thelanguage in which the preferred content is displayed uses a non-Latinscript, all content will be displayed in that script. For example, ifone changes their preferred content to Yahoo!® Greece, everythingincluding the Yahoo!® Mail user interface will be displayed not only inthe Greek language, but also in Greek script. Unfortunately, when onegoes to compose a letter in that email program, the script is stillLatin. Yahoo!® does not offer composition of email letters in any scriptother than Latin.

Google® also offers their users to render the Gmail® user interface inone of 37 different languages, many of which are displayed in non-Latinscripts. However, when one attempts to compose a email letter, the onlyscript available is Latin. For Indic languages, Google® does offer anIndic transliterator at http://www.google.com/transliterate/indic. Thetransliterator is inconsistent in its transliteration and is notintegrated into an online application, such as an email application ortext message application.

FIG. 3 is an example of a conventional email interface 300. Variousemail providers give options of languages in which to render their emailUI (user interface). The conventional email interface 300 shows anexample of Yahoo!® Mail in Russian.

FIG. 4 is another view of the conventional email interface 300 of FIG.3. Unfortunately, when a user clicks to compose a new letter, the useris restricted to the use of a Latin-based script.

Unfortunately, there is no online email service provider or textmessaging service provider that offers the ability to compose emailletters in any script other than Latin.

SUMMARY OF THE INVENTION

What is needed is an improved method having features for addressing theproblems mentioned above and new features not yet discussed. Broadlyspeaking, the present invention fills these needs by providing a methodand an apparatus for composing a message in an online textbox using anon-Latin script. It should be appreciated that the present inventioncan be implemented in numerous ways, including as a method, a process,an apparatus, a system or a device. Inventive embodiments of the presentinvention are summarized below.

In one embodiment, method is provided for composing a message in anonline textbox using a non-Latin script. The method comprises receivinga selection of a target language for composing the message in the onlinetextbox, loading a hash table and an integer n that are associated withthe target language, adding to a queue a character inputted from aQWERTY keyboard, and applying appropriate parsing and mapping techniquesto the queue using the hash table and the integer n to display anappropriate script of the target language.

In another embodiment, an apparatus is provided for composing a messagein an online textbox using a non-Latin script. The apparatus isconfigured for receiving a selection of a target language for composingthe message in the online textbox, loading a hash table and an integer nthat are associated with the target language, adding to a queue acharacter inputted from a QWERTY keyboard, and applying appropriateparsing and mapping techniques to the queue using the hash table and theinteger n to display an appropriate script of the target language.

In still another embodiment, a computer readable medium carrying one ormore instructions is provided for composing a message in an onlinetextbox using a non-Latin script. The one or more instructions, whenexecuted by one or more processors, cause the one or more processors toperform the steps of receiving a selection of a target language forcomposing the message in the online textbox, loading a hash table and aninteger n that are associated with the target language, adding to aqueue a character inputted from a QWERTY keyboard, and applyingappropriate parsing and mapping techniques to the queue using the hashtable and the integer n to display an appropriate script of the targetlanguage.

The invention encompasses other embodiments configured as set forthabove and with other features and alternatives.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention will be readily understood by the followingdetailed description in conjunction with the accompanying drawings. Tofacilitate this description, like reference numerals designate likestructural elements.

FIG. 1 is a block diagram of a system for composing a message in anonline textbox using a non-Latin script, in accordance with anembodiment of the present invention;

FIG. 2 is a flowchart for a method for composing a message in an onlinetextbox using a non-Latin script, in accordance with an embodiment ofthe present invention;

FIG. 3 is an example of a conventional email interface. Various emailproviders give options of languages in which to render their email UI(user interface);

FIG. 4 is another view of the conventional email interface of FIG. 3;

FIG. 5 is an example interface of the script converter, in accordancewith an embodiment of the present invention;

FIG. 6 is an example of a QWERTY keyboard, in accordance with anembodiment of the present invention;

FIG. 7 is an example interface with results in a text box after keys aretyped on a QWERTY keyboard, in accordance with an embodiment of thepresent invention;

FIG. 8 is another example interface of the script converter, inaccordance with an embodiment of the present invention;

FIG. 9 is an example of a small portion of a JavaScript file for thescript converter, in accordance with an embodiment of the presentinvention;

FIG. 10 is an output of the script converter after a user types “s” on aQWERTY keyboard during a Russian mapping, in accordance with anembodiment of the present invention;

FIG. 11 is an output of the script converter after a user types “s” andthen “h” on a QWERTY keyboard during a Russian mapping, in accordancewith an embodiment of the present invention;

FIG. 12 is an output of the script converter after a user types “s”,“h”, and then “u” on a QWERTY keyboard during a Russian mapping, inaccordance with an embodiment of the present invention;

FIG. 13 is an output of the script converter after a user types “a” on aQWERTY keyboard during a Hindi mapping, in accordance with an embodimentof the present invention;

FIG. 14 is an output of the script converter after a user types “aa” ona QWERTY keyboard during a Hindi mapping, in accordance with anembodiment of the present invention;

FIG. 15 is the expected result from typing “aaa” on a QWERTY keyboardduring a Hindi mapping, in accordance with an embodiment of the presentinvention;

FIG. 16 is the result from typing ‘aaaa’ on a QWERTY keyboard during aHindi mapping, in accordance with an embodiment of the presentinvention;

FIG. 17 is an output of the script converter after a user types “a” on aQWERTY keyboard during a Chinese mapping, in accordance with anembodiment of the present invention; and

FIG. 18 is an output after the user selects a character of choice fromthe Chinese characters of FIG. 17, in accordance with an embodiment ofthe present invention.

DETAILED DESCRIPTION OF THE INVENTION

An invention is disclosed for a method and an apparatus for composing amessage in an online textbox using a non-Latin script. Numerous specificdetails are set forth in order to provide a thorough understanding ofthe present invention. It will be understood, however, to one skilled inthe art, that the present invention may be practiced with other specificdetails.

Overview of Architecture

FIG. 1 is a block diagram of a system 100 for composing a message in anonline textbox using a non-Latin script, in accordance with anembodiment of the present invention. A device of the present inventionis hardware, software or a combination thereof. A device may sometimesbe referred to as an apparatus or a mechanism. Each device is configuredto carry out one or more steps of the method of composing a message inan online textbox using a non-Latin script.

The network 105 couples together a user computer 115 and any othernetwork device (not shown), such as an application server, web server,another user computer, or any other computing device. The network 105may be any combination of networks, including without limitation theInternet, a local area network, a wide area network, a wireless networkand a cellular network. The user computer 115 may be any type ofcomputing device on which a user may communicate with other computingdevices coupled to the network 105. For example, the user computer 115may be a desktop computer, a laptop computer, a workstation, a smartphone, a cell phone, or a mobile computing device, among other devices.

The user computer 115 includes without limitation a script converter 120and a QWERTY keyboard 125. The user computer 115 is coupled to arecipient device (not shown) via the network 105. The recipient deviceis configured to receive a message from the user computer 115 via email,text messaging or some other electronic messaging mechanism. The scriptconverter 120 is a device that carries out the more important operationsof the system 100.

In an alternative embodiment, the script converter 120 is locatedsimultaneously across a combination of devices, such as across the usercomputer 115 and an application server (not shown). For example, thescript converter 120 may have some functionality that is downloadable asa plug-in to the user computer 115, while maintaining some or mostfunctionality at an application server (not shown) or a web server (notshown).

Script Converter Design

The objectives of the script converter include without limitation thefollowing: to give users the option of composing letters in an onlinetextbox using scripts of their choice; to develop a framework to whichnew scripts can be added conveniently to the online textbox; and todevelop a framework that is reusable in other properties of the onlinetextbox.

The script converter provides a script option that is easily integratedin any online textbox. In particular, the script converter provides ascript option that is easily integrated in any commercially availablemessaging service, such as an emailing service, an SMS (Short MessageService), a text messaging service, or any other online messagingservice. The description here primarily uses a UI (user interface) ofYahoo!® Mail for exemplary purposes in order to describe thefunctionality of the script converter.

FIG. 5 is an example interface of the script converter 120, inaccordance with an embodiment of the present invention. The scriptconverter 120 in this example operates within the context of an emailapplication, specifically Yahoo!® Mail. In this context, the scriptconverter 120 allows a user to choose from among various targetlanguages (e.g., English, Russian, Arabic, and Hindi) configured intothe script converter 120. The user may push a compose button 505configured to initiate an interface for composing a letter. The scriptconverter 120 then displays the interface, which includes withoutlimitation a text box 510. The script converter 120 is configured tocarry out a mapping between the QWERTY keyboard and the script of thetarget language. The script converter 120 displays a send button 515 inthe script of the target language, which is Russian in this example ofFIG. 5. As the user types a message in the text box 510, the text isrealized in the script of the target language. The user may then pressthe send button 515 to send the composed email.

FIG. 6 is an example of a QWERTY keyboard 125, in accordance with anembodiment of the present invention. The scripts of many languages havemore characters than the number of characters provided on a normalQWERTY keyboard 125. For example, Hindi has hundreds of characters;Chinese has thousands. The form of a character may depend on thosecharacters preceding it and following it. For example, the form of aletter in Arabic can depend on several letters that may precede it andfollow it. Therefore, characters may have to change form as a usertypes.

In one embodiment, the mapping from the QWERTY keyboard to the script ofthe target language is based on phonetics. However, the script converteris not so limited to phonetics. A developer may base the mapping fromthe QWERTY keyboard on a different concept than phonetics.

The script converter takes user textual input and tries to match up to nkeys in a mapping stored separately from the parser, where n is anon-negative integer. The script converter provides a mapping from theQWERTY keyboard 125 to the script of any language. A user, oncecomfortable with a given mapping, can become quite proficient at usingthe QWERTY keyboard 125 to type a non-Latin script. As one example, thescript converter allows a user of Yahoo!® Mail to compose email lettersin non-Latin scripts.

Referring to FIG. 5, the code of the script converter 120 may bemodularized into two JavaScript files: one for the parsing and one forthe mapping. Accordingly, the script converter 120 includes a parserdevice and a mapping device. The script converter 120 receives aselection of a target language via a selector device 520, which is adrop-down menu in this example. The script converter 120 then loads aninteger n into the parser device and loads a hash table (i.e., mapping)into the mapping device. The integer n and the hash table are associatedwith the selected target language. In one embodiment, the scriptconverter 120 loads the integer n and the hash table from a memory ofthe user computer. In an alternative embodiment, the script converter120 downloads the integer n and the hash table from an externalcomputing device, such as an application server or a web server.

The parser collects the user's textual input into a queue and attemptsto match n characters from the queue with an entry in the mapping's hashtable. If no match is made, then the parser attempts to match n−1characters between the front of the queue and the mapping. If no matchis made, then the parser attempts to match n−2 characters, and so onuntil it reaches the front of the queue. If no match is made at all,then the parser merely waits until the user's next input is added to thequeue. Generally, n is typically rather small, for example, no more than5. The script converter 120 executes this process for each character theuser inputs.

Some scripts have far more letters or far more representations for theirletters or combinations of letters than does the English language.Accordingly, any mapping between the basic QWERTY keyboard (i.e., theletters, numbers, and shift key, and such a script) cannot be bijective,or one-to-one. Requirements for the script converter 120 may include,for example, the following: use only common keys (e.g., only use theletters, numbers, and shift key, and do not force the user to have tobecome accustomed esoteric keys, such as the control key or alternatekey); allow the developer of the script converter to use essentially anynumber of letters in a given combination to represent a character in thenon-Latin script; and facilitate ease of development (e.g., use oneparser for all target languages and a separate mapping for eachlanguage).

The parser and mappings of the script converter may be written inJavaScript. The Web pages may be written in standard HTML (hypertextmarkup language).

When the user chooses a target language, an integer n is passed to theparser. This parameter represents the maximum number of Latin characterson the QWERTY keyboard that the parser will try to map from Latin to thescript of the target language. The mapping is preferably a phoneticmapping from Latin characters on the QWERTY keyboard.

The mapping is merely a hash table. The keys are QWERTY keyboardcharacters or combinations of characters up to n characters. The valuesare the Unicode letters of the script of the target language.

As the user types characters using the QWERTY keyboard, the charactersare stored in a queue. The maximum size of the queue is n. As anexample, the script converter may use an integer of 2 for Russian andArabic, and may use an integer of 4 for Hindi.

The parser tries to match the n characters in the queue with an entry inthe hash table. If the parser cannot match all n characters, then theparser will try to match the first n−1 characters in the queue. If nomatch is found, then the parser will try to match n−2 characters, and soon.

Referring to FIG. 1, it is important to note that the script converter120 must operate in a system 100 having certain features in order forthe script converter 120 to work properly. For example, the recipientmust have the necessary fonts installed. Also, it may be necessary tosupply instructions for users whose mail is not readable. In oneembodiment, the recipient's mail provider must deliver the mail in theUnicode format in which the mail was composed. The system 100 mayprovide a header or footer in the local language in Latin script,stating that if the mail is unreadable, then the user can open a newaccount of the email service provider (e.g., Yahoo!®) and have theaddresser resend the mail to the new account.

FIG. 7 is an example interface with results in a text box 510 after keysare typed on a QWERTY keyboard, in accordance with an embodiment of thepresent invention. The text box 510 has scripts of several differentlanguages. Such variety is possible in one text box 510 because theselector device 520 provides a toggling feature between the varioustarget languages of choice. In other words, a user may use selectordevice 520 to write in a script of a selected target language, and thenthe user may use the selector device 520 to write in a script of anotherselected target language, and so on. These different scripts may show atthe same time in the same textbox 510 as shown in FIG. 7.

The parser of the script converter 120 is based on pushing the user'sinput into a queue and matching as many characters as possible, up to ncharacters. The parameter n is loaded when the user chooses the targetlanguage. The mapping for a given target language is kept in anassociated hash table (i.e., associated array). The hash table is passedto the parser after the user has selected the target language. Thescript converter 120 uses Unicode standard characters.

FIG. 8 is another example interface of the script converter 120, inaccordance with an embodiment of the present invention. This interfaceillustrates a messenger plug-in. To illustrate the plug-in feature ofthe script converter, a Yahoo!® Messenger plug-in is shown here thatuses the n-key parser. Target language options (not shown) are, forexample, English, Russian, Greek, Arabic, Hindi, and Chinese. It isappealing to be able to send and receive text messages written in thevarious scripts.

The same script converter 120, including the parser device and themapping device, provides text converting functionality for a number ofscripts. Examples include without limitation alphabets with which astraight mapping with Latin is feasible (e.g., Russian, Greek),alphabets for languages that are read right to left (e.g., Arabic),alphabets in which the form of a letter depends on letters that precedeor follow it (i.e., letters that change form as the user types, such asArabic or Hindi), character-based languages (e.g., Chinese).

FIG. 9 is an example of a small portion of a JavaScript file for thescript converter, in accordance with an embodiment of the presentinvention. This example is provided to demonstrate functionality of thescript converter, including the parser device and the mapping device.This particular JavaScript file is for a mapping from the QWERTYkeyboard into Russian script.

Suppose a user has chosen Russian using the selection device (e.g.,dropdown list). The parameter n=2 is passed to the parser and themapping module “russian.js”, a JavaScript file, is loaded. A smallportion of russian.js is shown in FIG. 9. The user types the letter “s”.The parser enters the character “s” into its queue, such that Queue=“s”.The parser then tries to match the character string “s” with an elementin the map array. The parser finds the map map[“s”]=“\u0441” (notshown); and so returns the Russian letter “c”.

FIG. 10 is an output of the script converter after a user types “s” on aQWERTY keyboard during a Russian mapping, in accordance with anembodiment of the present invention. As discussed above with referenceto FIG. 9, a JavaScript for Russian is loaded in the script converter.The user types the letter “s” on the QWERTY keyboard. The scriptconverter returns the Russian letter “c” as shown.

FIG. 11 is an output of the script converter after a user types “s” andthen “h” on a QWERTY keyboard during a Russian mapping, in accordancewith an embodiment of the present invention. As discussed above withreference to FIG. 9, a JavaScript for Russian is loaded in the scriptconverter. Continuing from FIG. 10, the user now types the letter “h” onthe QWERTY keyboard. The parser enters “h” into the queue, such thatQueue=“sh”. The parser tries first to match the entire string in thequeue. Finding the match map[“sh”]=“\u0448” (not shown), the parserreturns the Russian letter ‘

’ and replaces the ‘c’ with the ‘

’, as shown in FIG. 11.

FIG. 12 is an output of the script converter after a user types “s”,“h”, and then “u” on a QWERTY keyboard during a Russian mapping, inaccordance with an embodiment of the present invention. As discussedabove with reference to FIG. 9, a JavaScript for Russian is loaded inthe script converter. Continuing from FIG. 11, the user now types theletter “u” on the QWERTY keyboard. Note that in this explanation, thescript converter has set n=2 for Russian. Accordingly, the queue onlyhas space for two characters. The script converter pops the “s” from thequeue in a first-in/first-out manner. The script converter pushes the“u” to the front of the queue, such that Queue=“hu”. The parser tries tomatch the string “hu” in the mapping in russian.js but cannot make amatch. So, the parser then decrements the length of the string it willtry to match by 1 (i.e., to n−1, or 2−1=1) toward the front of thequeue, where currently the “u” is positioned. The string it will try tomatch now is “u”. The parser finds the mapping “\u0443” (not shown); andreturns the Russian letter “y” to the output component to give theresult in FIG. 12.

Note that, when one considers this particular example, it is importantthat the mapping for the character “h” does not exist. That is,ambiguity would arise if both mappings (i.e., map[‘sh’ ] andmap[‘s’]map[‘h’ ]) existed in one language JavaScript module. Adeveloper must practice considerable care when creating a mapping, andmust consider all of the different combinations of letters for both theinput and output.

FIG. 13 is an output of the script converter after a user types “a” on aQWERTY keyboard during a Hindi mapping, in accordance with an embodimentof the present invention. This Hindi mapping example of FIGS. 13-16illustrates the flushing mechanism of the script converter. A common anduseful mapping is to use a single letter, for example “a”, for a shortvowel sound and two letters, for example “aa”, for a long vowel sound.Of course, it's possible to choose “a” and then “A” for the two sounds,respectively. However, perhaps it is a little more intuitive andconvenient to represent the two sounds with “a” and “aa”. Such desiredrepresentations are numerous in Arabic and Hindi.

For Hindi, if the code for the two mappings is given asmap[“a”]=“\u0905”, and map[“aa”]=“\u0906”, and if n is at least 2 forHindi, then there is a problem. Typing the first “a” gives the result inFIG. 13.

FIG. 14 is an output of the script converter after a user types “aa” ona QWERTY keyboard during a Hindi mapping, in accordance with anembodiment of the present invention. Typing the second “aa” gives theresult in FIG. 14.

FIG. 15 is the expected result from typing “aaa” on a QWERTY keyboardduring a Hindi mapping, in accordance with an embodiment of the presentinvention. Typing the third “a” in “aaa”, however, repeats the result inFIG. 14 instead of providing the expected result in FIG. 15.

FIG. 16 is the result from typing ‘aaaa’ on a QWERTY keyboard during aHindi mapping, in accordance with an embodiment of the presentinvention. When the third “a” is typed, the last two characters in theparser's queue are “aa”. A match on “aa” is found. So, the previous

, as in FIG. 14, is replaced with the new

. To the user, of course, nothing appears to have happened; that is,continually pressing “a” seems to have no effect after the first

is printed.

To overcome this problem, a flushing mechanism is added to the parser.The mapping above is replaced with the mappings map[“a”]=“\u0905” andmap[“aa”]=“\u0906&”. Note the ampersand after the 6 in the map for “aa”.If the parser sees this symbol at the end of a match it has made whiletrying to map a user's input, the parser will flush the queue. Theresult is typing “aaa” gives the expected result in FIG. 15, and typinga fourth “a” gives the result in FIG. 16. Moreover, continually typing“a” will repeat the

, as one would expect.

FIG. 17 is an output of the script converter after a user types “a” on aQWERTY keyboard during a Chinese mapping, in accordance with anembodiment of the present invention. This Chinese mapping example inFIGS. 17-18 illustrates the slider mechanism of the script converter. Inan effort to include character-based languages like Chinese, a slidermechanism is provided as additional functionality of the parser. If theuser chooses a language like Chinese, a parameter (true-false flag) ispassed that indicates the slider is needed. Specifically for Chinese,the mapping matches pinyin (i.e., the Romanization of Chinesecharacters) to the Unicode representation of the Chinese characters.(Here, the four tones in Mandarin Chinese will be ignored.) Because apinyin word can stand for several Chinese characters, a single pinyinentry is mapped to a space-delimited list of Chinese characters (i.e.,multiple characters), for example,

map[‘yi’ ]=“\u554A\u2081 \u963F\u2082 \u55C4\u2085 \u814C\u2086”.

While the script converter may use pinyin to map to a Chinese script,the script converter may use a similar multiple character mappingtechnique for another language. Note that pinyin is not necessarilybased on phonetics. Accordingly, for a language other than Chinese, thescript converter may use a mapping technique that is analogous to thepinyin technique and not necessarily based on phonetics.

In the example in FIG. 17, the user has typed “a”. As shown, “a” maps toseven different Chinese characters. The parser returns the sevencharacters to the output component. The list of characters isenumerated. The enumeration is shown via subscripts on the characters.

To choose one of the seven characters in FIG. 17, the user has two ways.One way is for the user to scroll right or left through the list untilthe character of choice is found at the cursor position. The user thentypes a space to select the character of choice. The script converterkeeps the character of choice and removes the remaining characters.

FIG. 18 is an output after the user selects a character of choice fromthe Chinese characters of FIG. 17, in accordance with an embodiment ofthe present invention. The cursor appears after the character, as shownin FIG. 18. The vertical line to the right of the character is thecursor. The cursor appears after the character. The cursor is nowlocated after the character. Accordingly, the user can now proceed totype the pinyin representation for the next desired Chinese character.

Another way for choosing among the seven characters in FIG. 17 is forthe user to select the number that corresponds to the subscript on thecharacter of choice. The user then types a space to select the characterof choice, or the script converter automatically selects the characterof choice up the user selecting the corresponding number. As with thefirst choice, the script converter keeps the character of choice andremoves the remaining characters.

Overview of Method

FIG. 2 is a flowchart for a method 200 for composing a message in anonline textbox using a non-Latin script, in accordance with anembodiment of the present invention. The steps of the method 200 may becarried out by the script converter 120 of FIG. 1. The method 200 startsin step 205 where the system receives a selection of a target languagefor composing the message in the online textbox. For example, a useruses the selection device 520 of FIG. 5 to select a target language. Themethod 200 then moves to step 210 where the system loads a hash tableand an integer n that are associated with the target language. Next, instep 215, the system adds to a queue a character inputted from a QWERTYkeyboard. For example, the script converter receives input of acharacter that a user typed on the QWERTY keyboard.

The following steps involve applying appropriate parsing and mappingtechniques to the queue to display an appropriate script of the targetlanguage. Accordingly, the method 200 moves to decision operation 220where the system determines if the queue has more than n characters. Ifthe queue does not have more than n characters, then the method 200advances to step 230 discussed below. Before getting to step 230, if thequeue does have more than n characters, then the method 200 moves tostep 225 where the system removes a character from the queue in afirst-in/first-out manner until the queue has n characters. Next, instep 230, the system attempts to match the queue to a correspondingscript in the hash table.

The method 200 then moves to decision operation 235 where the systemdetermines if the queue matches a corresponding script in the hashtable. If there is no match in the hash table, then the method 200returns to step 215 and continues. However, if there is a match in thehash table, then the method moves to step 240 where the system displaysthe corresponding script from the hash table. For example, the scriptconverter displays a particular Russian script in a textbox of an emailapplication.

The method then proceeds to decision operation 245 where the systemdetermines if another character is being received from the QWERTYkeyboard. If the system is receiving another character input from theQWERTY keyboard, then the method 200 returns to step 215 and continues.However, if the system is not receiving another character input from theQWERTY keyboard, then the method 200 is at an end.

Note that the method 200 may include other details that are notdiscussed in this overview of FIG. 2. For example, the method 200 mayinclude without limitation a toggling feature, a flushing feature, aslider feature, and other features. These other details are discussedabove with reference to the appropriate figures.

Computer Readable Medium Implementation

Portions of the present invention may be conveniently implemented usinga conventional general purpose or a specialized digital computer ormicroprocessor programmed according to the teachings of the presentdisclosure, as will be apparent to those skilled in the computer art.

Appropriate software coding can readily be prepared by skilledprogrammers based on the teachings of the present disclosure, as will beapparent to those skilled in the software art. The invention may also beimplemented by the preparation of application-specific integratedcircuits or by interconnecting an appropriate network of conventionalcomponent circuits, as will be readily apparent to those skilled in theart.

The present invention includes a computer program product which is astorage medium (media) having instructions stored thereon/in which canbe used to control, or cause, a computer to perform any of the processesof the present invention. The storage medium can include withoutlimitation any type of disk including floppy disks, mini disks (MD's),optical disks, DVDs, CD-ROMs, micro-drives, and magneto-optical disks,ROMs, RAMs, EPROMs, EEPROMs, DRAMs, VRAMs, flash memory devices(including flash cards), magnetic or optical cards, nanosystems(including molecular memory ICs), RAID devices, remote datastorage/archive/warehousing, or any type of media or device suitable forstoring instructions and/or data.

Stored on any one of the computer readable medium (media), the presentinvention includes software for controlling both the hardware of thegeneral purpose/specialized computer or microprocessor, and for enablingthe computer or microprocessor to interact with a human user or othermechanism utilizing the results of the present invention. Such softwaremay include without limitation device drivers, operating systems, anduser applications. Ultimately, such computer readable media furtherincludes software for performing the present invention, as describedabove.

Included in the programming (software) of the general/specializedcomputer or microprocessor are software modules for implementing theteachings of the present invention, including without limitationreceiving a selection of a target language for composing the message inthe online textbox, loading a hash table and an integer n that areassociated with the target language, adding to a queue a characterinputted from a QWERTY keyboard, and applying appropriate parsing andmapping techniques to the queue using the hash table and the integer nto display an appropriate script of the target language, according toprocesses of the present invention.

Advantages

The script converter functionality in an online messaging service ishighly valuable to any users whose native language uses a non-Latinscript. This functionality is not available with any conventional onlinemessaging service provider. Accordingly, users of non-Latin scriptedlanguages would naturally be drawn to an online messaging interfacehaving the script converter described here. It helps that the scriptconverter is easy and convenient to use.

The script converter provides enormous flexibility for creatingdifferent script mappings, particularly for languages whose number ofcharacters exceeds what is offered with a one-to-one mapping to theQWERTY keyboard. Hindi is an excellent example, which could easilyrequire a mapping in which n=4. Note that this integer n for the mappingin the script converter is discussed extensively above.

In the foregoing specification, the invention has been described withreference to specific embodiments thereof. It will, however, be evidentthat various modifications and changes may be made thereto withoutdeparting from the broader spirit and scope of the invention. Thespecification and drawings are, accordingly, to be regarded in anillustrative rather than a restrictive sense.

1. A method for composing a message in an online textbox using anon-Latin script, the method comprising: receiving a selection of atarget language for composing the message in the online textbox; loadinga hash table and an integer n that are associated with the targetlanguage; adding to a queue a character inputted from a QWERTY keyboard;and applying appropriate parsing and mapping techniques to the queueusing the hash table and the integer n to display an appropriate scriptof the target language.
 2. The method of claim 1, wherein the applyingappropriate parsing and mapping techniques comprises: determining thatthe queue has more than n characters; removing a character from thequeue in a first-in/first-out manner until the queue has n characters;and attempting to match the queue to a corresponding script in the hashtable.
 3. The method of claim 1, wherein the applying appropriateparsing and mapping techniques comprises: determining that the queuedoes not have more than n characters; and attempting to match the queueto a corresponding script in the hash table.
 4. The method of claim 1,wherein the applying appropriate parsing and mapping techniquescomprises matching the queue to a corresponding script in the hashtable.
 5. The method of claim 1, wherein the applying the appropriateparsing and mapping techniques comprises: failing to match the queue toa corresponding script in the hash table; adding to the queue anothercharacter inputted from the QWERTY keyboard; and continuing to apply theappropriate parsing and mapping techniques.
 6. The method of claim 1,wherein the receiving the selection of the target language comprisestoggling from one target language to another target language.
 7. Themethod of claim 1, wherein the applying appropriate parsing and mappingtechniques comprises: adding a flushing functionality to the parsing;attempting to match the queue to a corresponding script in the hashtable; and flushing the queue.
 8. The method of claim 1, wherein theapplying appropriate parsing and mapping techniques comprises: adding aslider functionality to the parsing and mapping techniques; attemptingto match the queue to a corresponding script in the hash table; anddisplaying a list of multiple corresponding scripts from the hash table.9. The method of claim 18, wherein the applying appropriate parsing andmapping techniques further comprises: receiving a selection of a scriptfrom the list of multiple corresponding scripts; and displaying theappropriate script based on the selection of the script from the list ofmultiple corresponding scripts.
 10. The method of claim 1, wherein theloading the hash table and the integer n comprises downloading from anexternal computing device to a user computer at least one of: thehashing table; and the integer n.
 11. An apparatus for composing amessage in an online textbox using a non-Latin script, the apparatusbeing configured for: receiving a selection of a target language forcomposing the message in the online textbox; loading a hash table and aninteger n that are associated with the target language; adding to aqueue a character inputted from a QWERTY keyboard; and applyingappropriate parsing and mapping techniques to the queue using the hashtable and the integer n to display an appropriate script of the targetlanguage.
 12. The apparatus of claim 11, wherein the apparatus isfurther configured for: determining that the queue has more than ncharacters; removing a character from the queue in a first-in/first-outmanner until the queue has n characters; and attempting to match thequeue to a corresponding script in the hash table.
 13. The apparatus ofclaim 11, wherein the apparatus is further configured for: determiningthat the queue does not have more than n characters; and attempting tomatch the queue to a corresponding script in the hash table.
 14. Theapparatus of claim 11, wherein the wherein the apparatus is furtherconfigured for matching the queue to a corresponding script in the hashtable.
 15. The apparatus of claim 11, wherein the apparatus is furtherconfigured for: failing to match the queue to a corresponding script inthe hash table; adding to the queue another character inputted from theQWERTY keyboard; and continuing to apply the appropriate parsing andmapping techniques.
 16. The apparatus of claim 11, wherein the apparatusis further configured for toggling from one target language to anothertarget language.
 17. The apparatus of claim 11, wherein the apparatus isfurther configured for: adding a flushing functionality to the parsing;attempting to match the queue to a corresponding script in the hashtable; and flushing the queue.
 18. The apparatus of claim 11, whereinthe apparatus is further configured for: adding a slider functionalityto the parsing and mapping techniques; attempting to match the queue toa corresponding script in the hash table; and displaying a list ofmultiple corresponding scripts from the hash table.
 19. The apparatus ofclaim 18, wherein the apparatus is further configured for: receiving aselection of a script from the list of multiple corresponding scripts;and displaying the appropriate script based on the selection of thescript from the list of multiple corresponding scripts.
 20. Theapparatus of claim 11, wherein the apparatus is further configured fordownloading from an external computing device to a user computer atleast one of: the hashing table; and the integer n.
 21. A computerreadable medium carrying one or more instructions for composing amessage in an online textbox using a non-Latin script, wherein the oneor more instructions, when executed by one or more processors, cause theone or more processors to perform the steps of: receiving a selection ofa target language for composing the message in the online textbox;loading a hash table and an integer n that are associated with thetarget language; adding to a queue a character inputted from a QWERTYkeyboard; and applying appropriate parsing and mapping techniques to thequeue using the hash table and the integer n to display an appropriatescript of the target language.